/**
 * 描述：
 *
 * @author madong47
 * @date 2020/10/30
 */
package com.ddd.domain;
//概述
//对标常规设计中的 Domain 层及部分 Service 层功能，即业务行为和单表查询功能。
//
//职责
//主要存放领域对象（聚合根、实体、值对象）和领域服务等核心逻辑代码。领域层包含多个以聚合为单位的包路径，例如图中的 contentbase 和 datasource。
//
//组成
//聚合（Aggregate）
//例如图中的 contentbase 和 datasource，用来存放一个聚合内的所有实体、值对象和领域服务。
//
//entity
//存放聚合根、实体、值对象等领域对象。
//
//这里的entity实体对象是充血模型，有自己的业务逻辑。例如对自身的状态修改，创建、编辑自身对象实例，对自身某些字段赋值等操作。
//
//factory
//工厂类代码（用来生产或者说DO和PO互转）。DO即Domain对象，领域对象；PO为数据库对象。
//
//po
//PersistentObject，持久化对象，对应数据库表。
//
//service
//领域服务，用来调用一个或组合多个实体的业务逻辑。在领域服务中调用实体对象方法修改实体自身数据及状态，而后调用相关的仓储接口持久化实体对象。
//
//领域对象校验放到领域服务层。
//
//应用服务与领域服务的区别：
//
//1）范围，应用服务为跨聚合。领域服务范围在聚合内、领域内。
//
//2）性质，应用服务包装、调度和编排各领域服务中已经实现好的方法。领域服务负责实现具体的自身领域的业务逻辑。
//
//repository
//存放领域级别仓储接口。
//
//由于DDD中各层都需要依赖领域层，所以将仓储的接口从原本的基础层提升到了领域层，然后在基础层实现领域层仓储接口，用来实现依赖反转。
